約 2,957,034 件
https://w.atwiki.jp/coolnaurl/pages/19.html
BMHelper(beta4 )を使ったMIDI解析の手順 1.シーケンスをMIDIで書き出す 2.BMHelperでMIDIを開く 3.解析 4.出力 5.スライス 6.定義 7.配置 1.シーケンスをMIDIで書き出す 方法はDAWによって変わるかもしれないので割愛します。必要なパートは全て書き出してください。FL StudioはMIDIとの連携がカスなので出来ませんが、Cubaseなどでは複数のトラックをまとめてMIDI出力できる機能もあるようです。 FLの場合はパートごとに、ピアノロールを開いてCtrl+Shift+MでMIDIで書きだすことができます。ピアノロールを使っているキー音パート全てに対してこれを行います。 2.BMHelperでMIDIを開く MIDIファイルをD Dするか、右クリックして「プログラムから開く」から選択するなどしてください。 開くときにどのトラックを読み込むか問われるので、複数トラックがまとまっているMIDIの場合は解析したいトラックを選択してください。書き出す時点で各トラックには分かりやすい名前を付けておいたほうがよいでしょう。 3.解析 MIDIの読み込みが終わると上のようなウィンドウが出てきます。「新規分割...」をクリックします。 すると右のようなウィンドウが出てきます。 分割名 そのままで結構です。 頭の余白 FL StudioなどWAVで書き出すと先頭が少し削られるような場合を防ぐなら1などの数値を入れておきます。単位は拍です。 最小間隔 あるノートの終端から次のノートまでの最小のインターバルを設定します。今回の例のように残響とDry成分を分ける場合は小さめ(4から6程度)で構いませんが、ディレイなどをキー音に含める場合には大きめに取ります。こちらも単位は拍です。 最小とあるのは、全てのノートの始端は必ず整数拍に置かれるからです。小節頭にある8分音符の終端からちょうど4拍後は次の小節の1/2拍目ですが、整数化のため半拍後ろにずれて2拍目に置かれます。この場合間隔は4.5拍です。 ソート 「なし」にすると読み込んだMIDIシーケンスに登場する順に並べられます。その他の選択は「nn」がノートナンバー(音高)、「gate」がゲート、「vel」がベロシティ、の昇順に、左ほど優先されて並べ替えられます。例えば「nn/gate/vel」ならまず音の低い順に、同じ高さの音は長さが短い順に、長さも同じ場合はベロシティの小さい順に、というふうに並びます。 値の差が(以下略) 表記のとおりです。両方とも0にするとわずかでも異なるノートは全て異なる音として処理されます。作曲の項でも書きましたが、これを設定するよりは、元のMIDIの時点である程度ベロシティとゲートをクオンタイズしておいたほうがよいでしょう。 ZZ定義を有効にする 何も考えずに放置。現状でZZ定義を使用しない(FF定義を使用する)メリットは特にありません。 多重定義を使用する 多重定義を有効にするオプションです。基本的には有効にしておいたほうがいいですが、音色によってはあえてクリックノイズを発生させたほうが打鍵感が良くなる可能性があります。 定義の開始番号 整理されたノートの最初の音が定義される番号です。残りの音は連番で配置され、どこまで埋まるかは実際に分割を行ってみないとわかりません。 多重定義の間隔 前述の多重定義オプションが有効な場合に設定する値です。あるノートの終端から設定値以下の間隔で同じノートが置かれた場合、それらに別々の定義番号を充てます。 このようなシーケンスの場合、間隔を0.5(拍)以上に設定すると多重定義され、0.5未満の場合多重定義は使われません。また、0.5のときは先頭から01→02→01→02と交互に使われますが、1.0にすると01→02→03→01といった具合に使われる定義数が1つ増えます。隙間なく隣接する場合のみ多重定義を有効にしたい場合は0にします。 ここでは最小間隔6、ソート無し、同一視無し(両方0)、多重定義無し、定義開始番号は、さきほどBGMで03まで埋めたので04から始めることにします。 こうなりました。下段の画面のうち、上にあるのが並べ替えられたMIDIシーケンス、下の数字のうち上が定義番号、下がファイル番号です。 定義番号の右側にある矢印とボタンで、定義開始番号を変更することができます。 で一つ前、 で一つ後にずらします。「始番号...」をクリックすると直接入力が可能です。 最下段のステータスバーには分割の名前 ファイル数/定義数が表示されます。多重定義を行った場合は、右の定義数が左のファイル数より多くなります。 4.出力 まずはCtrl+Sで.bmhファイルを保存しておきましょう。 次にMIDIファイル出力をします。.bmhのファイル名と同じでよいでしょう。分割を行ったパート順に通し番号を付けておくと楽です。 出力されたMIDIをDAWで読み込みます。読み込むトラックに気を付けてください。 MIDIを読み込んだら、そのトラックをWAVで書き出します。 FLの場合、レンダリングモード(右図赤線)がPatternになっていることを確認してください。なっていない場合、一旦ウィンドウを閉じて、再生モードをPATにして(下図赤丸参照)から再度書き出しを行ってください。 5.スライス 書き出したWAVファイルを分割します。この手順はBMHelperとは関係ないので各自なんとかするか、Edisonを使ってスライスするか、woslicerを使いましょう。上の画像にある切断位置をコピーは、このwoslicerのためのスライスマーカーをコピーするためのボタンです。当wikiではwoslicerの使い方は解説しませんので、使う場合は各自でBMHelperのヘルプを見るなどしてください。 スライス作業は単にWAVを分割するだけではありません。さきほど設定した最小間隔は冗長な無音地帯ですから、SoundEngineなどで削除しておきましょう。 分割したWAVはBMSフォルダーに入れておきます。 6.定義 スライスが終わったら次はBMSファイルへの配置です。 まず保存しておいた.bmhファイルを開いて定義情報を押します。 ファイル名はデフォルトで.bmhのファイル名と同じになっていますが、必要に応じて変更しましょう。 その下にあるのが定義情報の一覧です。図ではファイル番号が0から始まっていますが、1から始まる場合もあるようで、原因がよく分からないので、分かる方いらっしゃいましたらご連絡いただけると幸いです。 Edisonから出力した場合これとは異なる命名規則となるため、別途リネームしておく必要があります。 左下のクリップボードにコピーを押すと定義情報がコピーされるのですが、beta4 時点で改行されない不具合があります。テキストエリアで右クリックして「すべて選択(A)」から普通にコピー(Ctrl+C)したほうが無難です。この不具合はいずれ直されるかもしれません。 コピーした定義情報は、BMSファイルをテキストエディタで開いて、#WAV定義が途切れた次の行を選択した状態で貼付け(Ctrl+V)ます。テキストを保存(Ctrl+S)して一旦閉じて、BMSEで開き直します。 7.配置 BMSEを開いたら、BMHelperのBMSシーケンスをコピーを押します。BMSEをアクティブにして、Ctrl+Vを押すと、現在の小節を起点としてBGMレーンの左端からノートが配置されます。 BMSシーケンスを貼り付けるまで、BMHelperを閉じてはいけません。BMHelperが作ったクリップボード情報は閉じると消されるので、開き直す羽目になります。 このとき最初の小節(#000)にはノートを置かないでください。BGMレーンにあるぶんには問題ありませんが、演奏レーンに持ってくるとプレイに支障が出ます。また、このままだと他のパートとノートが被ってしまうので、使われていない領域にずらします(Shiftを押しながらだと上下に移動しません)。 以上がBMHelperの役目です。あとは残りのパートでも同じことを繰り返していくだけです。定義開始番号には注意してください!
https://w.atwiki.jp/bomberboardgame/pages/18.html
1.IRCソフトを導入 Limechat2 http //limechat.net/ からダウンロードしてインストールしてください。 2.サーバーの追加 「サーバー」タブ→「サーバーの追加」で 設定名:爆弾部屋(ここは何でも良いです) ホスト名:irc.cokage.ne.jp(irc.cre.jp) ポート番号:6667 文字コード:UTF-8 「チャンネル」タブ→「新規」 チャンネル名に #爆弾ボドゲ と入れて接続すれば入れると思います。
https://w.atwiki.jp/bomb_boardgame/pages/20.html
1.IRCソフトを導入 Limechat2 http //limechat.net/ からダウンロードしてインストールしてください。 2.サーバーの追加 「サーバー」タブ→「サーバーの追加」で 設定名:爆弾部屋(ここは何でも良いです) ホスト名:irc.cokage.ne.jp(irc.cre.jp) ポート番号:6667 文字コード:UTF-8 「チャンネル」タブ→「新規」 チャンネル名に #爆弾ボドゲ と入れて接続すれば入れると思います。
https://w.atwiki.jp/mice/pages/42.html
and , or , exor がどんな物かは理解しているのを前提で進めます。 andマスク andマスクとは、andを使って必要な情報だけを取り出す事です。 次の章にある、ビットシフトと組み合わせると効果的です。 例えば16bitのデータ(data)のうち、真ん中の8bitだけ欲しい時(result)、次のようにすると、上手いことその部分だけを取り出す事ができます。 result = data 0x0ff0; この後、4bit左にシフトしておくと更にデータが扱いやすくなります。 (ビットシフトは次章参照) result = (data 0x0ff0) 4; または result = (data 4) 0x0ff; orで,変数の一部だけを1にする。 orを使って、変数の一部だけを1にできます。 例えば、H8-3052でP8の 0,1,2 bit をhighにしたい時は P8.DR.BYTE = P8.DR.BYTE | 0x07; // "|" がorの演算記号 //(Shiftを押しながらBackSpaceの左にあるキーを押すと出る) 注意しなければならないのは、元が0であろうと1であろうと関係なしに1にするという点です。 andと組み合わせて使うと大抵何でもできます。 exor(xor)を使って特定のbitを反転させる exorは色々と難しい事が書かれていますが、ここで注目するのは、 ※ある値=0,1のいずれかとすると、 「ある値と0をexorすると結果はある値」 「ある値と1をexorすると結果はある値を反転させた値」 という性質です。 これを使えば、LEDを点滅させるプログラム等が楽に書けます。 それ以外にも色々と使い道はありますが・・・。 たとえば、3052で、P8の0,2bit目を反転させたい時 P8.DR.BYTE = P8.DR.BYTE ^ 0x05; というように書く事ができます。 以上。 ここで紹介したのは基本的な使い方なので、色々と応用できると思います。 bit演算を使う事で大幅に書く量が減ったり、実行速度が上がったりするので 使えるようになるとお得な部分だと思います。
https://w.atwiki.jp/zaurus_squeeze/pages/14.html
youtubeにあるbattleship yamatoのトレーラーを再生してみました。 VLCは起動時大量のライブラリを読み込むので遅いですが使うライブラリは少ないので徐々にスワップアウトされそれなりに見れます。 ビルドしたものをルートファイルシステムに入れてあり、メニューの”VLC media player”から実行します。 VLCの設定 VLCのメニューより ツール→エフェクトとフィルター→ビデオエフェクト 変換のチェックボックスをオンにして90度回転と表示されているコンボボックスを270度回転と変更 もう一度VLCメニューより設定を選択 表示されたダイアログボックスの左側に表示されているビデオボタンを押下 出力コンボボックスをDirectFBに変更して保存ボタンを押下します。 音声 音声はヘッドフォンから出力される設定になっています。また音量設定もVLCからは変更できません。 出力先、音量を変更する場合はalsamixerコマンドにて変更してください。 キー →:10秒前へ ↑:1分前へ f:5分前へ ←:10秒後ろへ ↓:1分後ろへ b:5分後ろへ OK、Enter:ポーズ Cancel:ストップ(Xに戻ります) タッチ タッチすると経過時間を表示します。 samba sambaマウントすればVNCサーバを動画サーバにできます。 ssh経由でsambaマウントすれば通信が圧縮され効率的です。 fbvncフロントエンドであるconvncの”sambaマウント”を使用すると煩わしいコマンド入力をしないですみます。 ザウルス用動画変換 録画したファイルをVNCサーバにコピーし以下のコマンドでザウルス用動画に変換します。 16 9の動画の場合(xxxxはファイル名) ffmpeg -y -i xxxx -vcodec mpeg4 -s 320x180 -r 14.985 -b 300k -padtop 30 -padbottom 30 -acodec mp2 -ar 44100 -f avi xxxx.avi 4 3の動画の場合(xxxxはファイル名) ffmpeg -y -i xxxx -vcodec mpeg4 -s 320x240 -r 14.985 -b 300k -acodec mp2 -ar 44100 -f avi xxxx.avi
https://w.atwiki.jp/itsmnet/pages/1.html
@wikiへようこそ ウィキはみんなで気軽にホームページ編集できるツールです。 このページは自由に編集することができます。 メールで送られてきたパスワードを用いてログインすることで、各種変更(サイト名、トップページ、メンバー管理、サイドページ、デザイン、ページ管理、等)することができます まずはこちらをご覧ください。 @wikiの基本操作 用途別のオススメ機能紹介 @wikiの設定/管理 分からないことは? @wiki ご利用ガイド よくある質問 無料で会員登録できるSNS内の@wiki助け合いコミュニティ @wiki更新情報 @wikiへのお問合せフォーム 等をご活用ください @wiki助け合いコミュニティの掲示板スレッド一覧 #atfb_bbs_list その他お勧めサービスについて 大容量1G、PHP/CGI、MySQL、FTPが使える無料ホームページは@PAGES 無料ブログ作成は@WORDをご利用ください 2ch型の無料掲示板は@chsをご利用ください フォーラム型の無料掲示板は@bbをご利用ください お絵かき掲示板は@paintをご利用ください その他の無料掲示板は@bbsをご利用ください 無料ソーシャルプロフィールサービス @flabo(アットフラボ) おすすめ機能 気になるニュースをチェック 関連するブログ一覧を表示 その他にもいろいろな機能満載!! @wikiプラグイン @wiki便利ツール @wiki構文 @wikiプラグイン一覧 まとめサイト作成支援ツール バグ・不具合を見つけたら? 要望がある場合は? お手数ですが、お問合せフォームからご連絡ください。
https://w.atwiki.jp/suffix/pages/14.html
@wikiへようこそ ウィキはみんなで気軽にホームページ編集できるツールです。 このページは自由に編集することができます。 メールで送られてきたパスワードを用いてログインすることで、各種変更(サイト名、トップページ、メンバー管理、サイドページ、デザイン、ページ管理、等)することができます まずはこちらをご覧ください。 @wikiの基本操作 用途別のオススメ機能紹介 @wikiの設定/管理 おすすめ機能 気になるニュースをチェック 関連するブログ一覧を表示 その他にもいろいろな機能満載!! @wikiプラグイン @wiki便利ツール @wiki構文 バグ・不具合を見つけたら? お手数ですが、こちらからご連絡宜しくお願いいたします。 ⇒http //atwiki.jp/guide/contact.html 分からないことは? @wiki ご利用ガイド よくある質問 @wikiへお問い合わせ 等をご活用ください
https://w.atwiki.jp/sekaiju_maze/pages/62.html
マッピングツールの使い方 基本操作 タッチペンの代わりにマウスのクリックやドラッグでマッピングすることができます キーボードも合わせて使用するとさらに効果的です 作成したマップデータはローカルファイルまたはテキスト形式で保存できます マウス操作 マップ上のスクエアをクリックすることでそのスクエア表示を切り替えます。 切り替えはモードによって異なります。デフォルトではChangeモードです。モード切替はキーボードもしくは右のメニューで マップ上をドラッグすることで複数スクエアの表示切替もできます。 マップ上の枠線をクリックすることで枠線のあり・なしを切り替えることができます。 オプションのセレクトモードをボーダー選択のみにすると枠線を複数選択できます。横長に選択で横線、縦長に選択で縦線になります。 キーボード操作 キーボードの操作はマップ右のメニューアイコンをクリックすることでも同様の効果を得ることができます。 キーボードだけでマッピングできるようにはなっていません。 いくつかのショートカットキーはブラウザと被ることがあるため、右メニューアイコンクリックで操作したり、別のブラウザを使ったりしてください。 ローカルに保存してフラッシュプレイヤーで見るのが一番いいかもしれません。 視点移動 ↑↓←→ エリア移動 Shift + ↑↓ フロア移動 上/下 Control + ↑↓ ズームイン/アウト スクエアマッピングモード c Changeモード。Memo以外を順番に切替 n Noneモード a Passageモード e Eventモード t Tresureモード i Item-Pntモード m Monsterモード d Doorモード p Pitモード w Warpモード s ▲/▼Stairモード。上階段もしくは下階段を順番に切替 @ Memoモード データ関係 Control+s データセーブ Control+l データロード Shift+c 現在のマップフロアコードをクリップボードにコピー Shift+l マップ全フロアコードをクリップボードにコピー Control+o フロアコードを現在表示しているマップにロード オプションモード切替 b ボーダーモード切替(追加・削除・切替)デフォルトは切替 Control + m セレクトモード切替(スクエアのみ選択・ボーダーのみ選択・どちらも選択)デフォルトは両方選択 Shift + m Changeモード切替(Passage or Noneで切替・Memo以外のアイコン切替)デフォルトはPassage or None セーブ・ロード マップ右のメニューにあるTOOLタブのアイコンをクリックまたはキーボードのショートカットキーでセーブおよびロードができます。 それぞれ2通りのセーブ・ロード方法があります。 Flash Cookie ユーザーのローカルPCにデータを保存します。許可が必要だったりします。 TOOL タブの「SAVEバー」をクリックもしくは「Control +s 」でデータをセーブします。 セーブされたデータは次回起動時に自動的にロードされます。 セーブせずにロードもできます。 いまのところ1スロットあたり50フロアまで保存できます。スロットはいまのところ3つです。 使用しているswfファイルが違うとCookieも別物になります。たとえば「ほぼ原寸」でセーブしたデータは「×2」でロードしようとしてもできません。 別のswf間でどうしてもデータを写したい場合は↓のマップコードを使用してください マップコード マップをコード化してテキストのデータに保存できます TOOLタブの「COPY CODEバー」をクリックもしくは「Shift + c」で現在表示しているフロアのコードをクリップボードにコピーします TOOLタブの「LOAD CODEバー」をクリックもしくは「Control + o」でコード入力画面が出ます。ペーストして決定をクリック(もしくはEnterキー)すると現在表示しているフロアにコードのマップデータをロードします。ロード前のマップは消えます。失敗しても消えます。 TOOLタブの「COPY ALLバー」をクリックもしくは「Shift + l」で50フロアすべてのコードをクリップボードにコピーします。 TOOLタブの「LOAD ALLバー」をクリックでコード入力画面が出ます。ペーストして決定をクリック(もしくはEnterキー)すると現在表示しているスロットにマップデータをロードします。ロード前のマップは消えます。失敗しても消えます。
https://w.atwiki.jp/tmagic_teu/pages/38.html
MQOインポーターについて luxla.netにて公開されているプラグインを、どなたかが改良してblender.jpの掲示板にアップロードしたものです。 使う前の準備と注意 metasequoiaのデータ blender,pythonのインストール(pythonが入って無いと動きません) blender2.4.5 python2.5で動作確認済み ファイルのコピー mqo_import_win32_bl244py25_211a.zipをダウンロードして解凍すると、 GANGu.pydとmqo_import.pyが作成されます。 この二つをblenderのscriptフォルダにコピーします。(デフォルトの設定でインストールした場合は、C \Program Files\Blender Foundation\Blender\.blender\scripts にコピーします) 解凍したフォルダ コピー先のフォルダ 使い方 blenderを起動します。 メニューのfile import metasequoiaを選択します。 青色の画面が表示されます。 alphamap,normalmap,colormapにそれぞれ、アルファマップの保存してあるフォルダ、ノーマルマップ(バンプマップ)の保存してあるフォルダ、カラーマップの保存してあるフォルダを設定します。 targetにはインポートしたいオブジェクトファイルを設定します。 importボタンを1回押します。(連打しないこと) Escキーを押すと、最初の画面に戻ります。 ここでインポートしたオブジェクトが表示されていれば成功です。 F12をおしてテクスチャがきちんと読み込まれているか確認してみましょう。 メニュー インポーターの設定画面 インポート成功 試しにレンダリング ※この説明書きでは、metasequoiaに附属しているサンプルデータをインポートしてます。 質問等 背景と文字の色を考えたほうがいいと思います -- Derorin719 (2019-02-18 18 17 43) 名前 コメント 参考ページ luxla.net blender.jp metasequoia.net
https://w.atwiki.jp/kumikomi-yitjc/pages/150.html
電圧などのアナログ値をデジタル値(数値)に変換する装置(ハードウエア)をA/D変換器(Analog to Digital Converter)という。 例えば、図の様なアナログの信号(電圧値)があった時に①の点では、2Vであったとすると、AD変換器(以下、ADC)を使えば、この電圧値を数値に変換する事が出来る。 ADCでアナログ電圧を数値に変換する事を、サンプリングと言う。サンプリングの周期は、アナログ電圧の周波数に対して、十分短い事が要求される。具体 的には、アナログ電圧の最大の周波数成分に対して2倍以上の速度でサンプルすれば良い事が知られている。(サンプリング定理) ただし、実用上は3倍以上、出来れば10倍程度の速度でサンプルすることが望ましい。 変換結果とアナログ電圧の関係 アナログ入力電圧は、ADCによって数値に変換される。この時、数値と実際の電圧との関係は、以下のようになる。 ADCの分解能は10bit(0~1023の数値を表現できる)なので、基準電圧を2.56Vとすると、この間を1024等分する事になる。つまり、 式:変換後の数値と入力電圧・基準電圧の関係 変換後の数値(ADCH、ADCL) = (入力電圧[V](ADC0~ADC12ピン) × 1023) / 2.56(基準電圧:VREF) ということになる。【注意】 ここで入力電圧の上限を5Vとしているが、正確には電源電圧が上限となる。従って、電池(3V)などでマイコンを動作させた場合は、3Vが上限になる事に注意。 (USB給電を行った場合は、5V) 上限を超える電圧を加えると、マイコンが破壊する。 AVRマイコン(ATMega32U4)に実装されているADCの主な仕様は、以下の通り 分解能10-bit 変換時間 13μs - 260μs アナログ入力12チャンネル(同時使用は1チャンネル) 入力可能電圧は 0 - VCC(USB使用の場合は+5V) 1.1Vの基準電圧源を内蔵 (2.56V ?) 連続変換、単発変換の切り替え 割り込みに対応 などである。 プログラミングの手順 設定内容は以下の通り、 AD変換器(以降、ADC)のON/OFF切り替え(ADCSRAレジスタ:ADENビット(第7ビット)) ADENビットを1にすることで、ADCを起動する。 ADCSRA |= _BV(ADEN); // AD変換器を起動 AD変換の起動設定(ADCSRA:ADATEビット(第5ビット)、ADCSRB:ADSTxビット(第0から第3ビット)) AD変換をスタート(トリガともいう)させるイベントを選択する。例えばタイマなどの比較一致などが選択できる。 ADATEビットを1にセットすると、ADCSRBレジスタのADTS3からADTS0ビットの設定が有効になる。それぞれ、以下のように機能が割り当てられている。 表:トリガモード一覧 ADCSRBレジスタ:bitの位置 (ビットの名前) 3 (ADTS3) 2 (ADTS2) 1 (ADTS1) 0 (ADTS0) 連続変換 0 0 0 0 アナログ比較器 0 0 0 1 外部割込み(IRQ0) 0 0 1 0 タイマ0 比較・一致 0 0 1 1 タイマ0 オーフロー(TCNT0) 0 1 0 0 タイマ1 比較・一致 (OCR1B) 0 1 0 1 タイマ1 オーバフロー(TCNT1) 0 1 1 0 タイマ1 キャプチャイベント 0 1 1 1 タイマ4 オーバフロー 1 0 0 0 タイマ4 比較・一致 (OCR4A) 1 0 0 1 タイマ4 比較・一致 (OCR4B) 1 0 1 0 タイマ4 比較・一致 (OCR4D) 1 0 1 1 連続変換(AD変換を1回だけでなく、連続してどんどん行わせる)の設定にしたいなら、以下の様にする。 ADCSRA |= _BV(ADATE); // ADATEビットを1に設定 ADCSRB = 0b11110000; // ADTS3~0ビットを0に設定 ADATEビットを0にして、ADSCビット(ADCSRA)を1にすると、AD変換は1回だけ行われる。 ADCSRA = ~_BV(ADATE); // ADCSRAレジスタは初期値が0なので、通常はこの設定は不要 割り込み設定(ADCSRA:ADIFビット(第4ビット)、ADIEビット(第3ビット)) AD変換終了時の割り込みを使うかどうかを選択する。ADIFビットは、割り込みが有効であるか否かにかかわらず、変換が終了した場合に1がセットされる。この状態でADIEビットに1が設定されていれば、割り込みハンドラが呼び出される。ADIFビットは、必要に応じてプログラムでクリアする必要がある。(1を書き込むと、クリア(=0)される) ADCSRA |= _BV(ADIE); // AD割り込みを許可 ADCSRA = ~_BV(ADIE); // AD割り込みを禁止 // 割り込みを使わないで、変換終了をチェックする if (ADCSRA _BV(ADIF)) { ADCSRA |= _BV(ADIF); // ADIFフラグをクリアする // AD変換終了 } else { // AD変換実行中 } 変換時間設定(ADCSRA:ADPS2~0ビット(第0~第2ビット)) AD変換器の変換時間を設定する。AD変換のクロックは50~200KHzの間で設定できる。(1変換につき13クロックが必要となる) ※ADCSRレジスタのビット配置を参照 システムクロックが16MHzで、変換速度を104uS(104マイクロ秒)としたいなら、以下の様にする。 ADCSRA |= _BV(ADPS2) | _BV(ADPS1) | _BV(ADPS0); // ADPS2~0ビットが111 これで、何故、104uSなのかというと、 ○16MHz = 16000000 Hzで、これを1/128するので、125000Hz。 ○1クロック当たりの時間は1/125000なので、0.000008秒(=8マイクロ秒) ○1回の変換に13クロック必要なので、0.000008 × 13 = 0.000104秒 (=104マイクロ秒) つまり、1/0.000104=9615.38... で、1秒間で9515.4回(9.5kSPS)、アナログデータを数値に変換する事が出来る。 「こんなんじゃ、全然速度が足らん」、というあなた! 変換精度を犠牲に出来るのなら、変換速度を上げることもできます。(77kSPS/8bit位が上限?) 変換結果の出力方法(ADMUXレジスタ:ADLARビット(第5ビット)) 変換結果はADCレジスタ(16ビット)に記録されるが、AD変換器の分解能は10ビットなので、長さが合わない。このため、変換結果を上位側に詰めるか、下位側にするかを選択する。具体的には以下の通り。 表:AD変換結果のレイアウト(ADCレジスタ上のデータの場所)ADLAR=1 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ADC9 ADC8 ADC7 ADC6 ADC5 ADC4 ADC3 ADC2 ADC1 ADC0 - - - - - - ADLAR=0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 - - - - - - ADC9 ADC8 ADC7 ADC6 ADC5 ADC4 ADC3 ADC2 ADC1 ADC0 実際のアクセスでは、ADCレジスタは8ビットずつ分割して2回に分けて(下位、上位の順)アクセスする。 上位側のレジスタはADCH、下位側のレジスタはADCLであり、ADLARの設定で、以上の様にデータが設定されることに注意する事。 基準電圧の設定(ADMUXレジスタ:REFS1,0ビット(第7,6ビット)) AD変換の変換値の基準となる電圧を指定する。変換値への影響については、上の計算式(式:変換後の数値と入力電圧・基準電圧の関係)を参照のこと 表:基準電圧減の選択 ADMUXレジスタ:bitの位置 (ビットの名前) 7 (REFS1) 6 (REFS0) AREFピン(ボード上はVREFピン)を基準電圧とする。 0 0 AVCC(Davinci32Uは5V)を基準電圧とする。 0 1 予約 1 0 内部2.56V基準電圧 1 1 入力チャンネルの選択(ADMUXレジスタ:MUX4~0ビット(第4~第0ビット)、 ADCSRBレジスタ:MUX5ビット(第5ビット)) ATMega32U4には12本のアナログ入力がある。これをどのように切り替えて使うかを選択する。 表:アナログ入力チャンネルの選択 ビット MUX5~MUX0 シングルエンド入力ピン 差動入力 (プラス側)ピン 差動入力 (マイナス側)ピン 倍率 00 0000 ADC0 N/A 00 0001 ADC1 00 0010 N/A 00 0011 00 0100 ADC4 00 0101 ADC5 00 0110 ADC6 00 0111 ADC7 00 1000 N/A N/A N/A N/A 00 1001 ADC1 ADC0 10x 00 1010 N/A N/A N/A 00 1011 ADC1 ADC0 200x 00 1100 N/A 00 1101 00 1110 00 1111 01 0000 ADC0 ADC1 1x 01 0001 N/A 01 0010 01 0011 01 0100 ADC4 ADC1 1x 01 0101 ADC5 ADC1 1x 01 0110 ADC6 ADC1 1x 01 0111 ADC7 ADC1 1x 01 1000 N/A 01 1001 01 1010 01 1011 01 1100 01 1101 01 1110 1.1V (VBAND GAP) 01 1111 0V (GND) 10 0000 ADC8 10 0001 ADC9 10 0010 ADC10 10 0011 ADC11 10 0100 ADC12 10 0101 ADC13 10 0110 N/A ADC1 ADC0 40x 10 0111 Temperature Sensor 10 1000 N/A ADC0 ADC0 10x 10 1001 ADC5 ADC0 10x 10 1010 ADC6 ADC0 10x 10 1011 ADC7 ADC0 10x 10 1100 ADC4 ADC1 10x 10 1101 ADC5 ADC1 10x 10 1110 ADC6 ADC1 10x 10 1111 ADC7 ADC1 10x 11 0000 ADC4 ADC0 40x 11 0001 ADC5 ADC0 40x 11 0010 ADC6 ADC0 40x 11 0011 ADC7 ADC0 40x 11 0100 ADC4 ADC1 40x 11 0101 ADC5 ADC1 40x 11 0110 ADC6 ADC1 40x 11 0111 ADC7 ADC1 40x 11 1000 ADC4 ADC0 200x 11 1001 ADC5 ADC0 200x 11 1010 ADC6 ADC0 200x 11 1011 ADC7 ADC0 200x 11 1100 ADC4 ADC1 200x 11 1101 ADC5 ADC1 200x 11 1110 ADC6 ADC1 200x 11 1111 ADC7 ADC1 200x また、アナログ入力にはシングルエンド伝送と差動伝送がある。 シングルエンド伝送とは、1本の信号線でGNDとの電圧の差で信号を伝達する方法 差動伝送とは、2本の信号線を使って両方の信号線の電圧の差を使って信号を伝達する方法 いずれの方法も一長一短があるが、より高速に長距離の信号伝送を行いたい場合はノイズに強い差動伝送が使われる。 AD変換スタート(ADCSRA:ADSTビット(第6ビット)) ADSTビットを1にするとAD変換をスタートする。連続変換中にAD変換を停止させたい場合は、0にする。 各レジスタのビットの配置は、以下の通り。 ADCSRAレジスタのビット配置 bitの位置 (ビットの名前) 7 (ADEN) 6 (ADSC) 5 (ADATE) 4 (ADIF) 3 (ADIE) 2 (ADPS2) 1 (ADPS1) 0 (ADPS0) 機能 ADEN=1 ADCを起動 ADEN=0 ADCを停止 ADSC=1 AD変換スタート ADSC=0 AD変換停止 「2.AD変換の 起動設定」を参照 AD変換終了 割り込みフラグ (「3.割り込み設定」を参照) ADIE=1 AD変換終了割り 込みを有効 ADIE=0 AD変換終了割り 込みを無効 (「3.割り込み設定」を参照) システムクロック の分周比 000 = 1/2 001 = 1/2 010 = 1/4 011 = 1/8 100 = 1/16 101 = 1/32 110 = 1/64 111 = 1/128 初期値 0 0 0 0 0 0 0 0 ADCSRBレジスタのビット配置 bitの位置 (ビットの名称) 7 (ADHSM) 6 (ACME) 5 (MUX5) 4 - 3 (ADTS3) 2 (ADTS2) 1 (ADTS1) 0 (ADTS0S0) 機能 高速変換モード 「表:アナログ入力チャンネルの選択」を参照 - 「表:トリガモード一覧」を参照 初期値 0 0 0 0 0 0 0 0 ADMUXレジスタのビット配置 bitの位置 (ビットの名前) 7 (REFS1) 6 (REFS0) 5 (ADLAR) 4 (MUX4) 3 (MUX3) 2 (MUX2) 1 (MUX1) 0 (MUX0) 機能 「表:基準電圧減の選択」参照 「表:AD変換結果のレイアウト」参照 「表:アナログ入力チャンネルの選択」参照 初期値 0 0 0 0 0 0 0 0 DIDR1レジスタのビット配置 bitの位置 (ビットの名称) 7 (ADC7D) 6 (ADC6D) 5 (ADC5D) 4 (ADC4D) 3 - 2 - 1 (ADC1D) 0 (ADC0D) 機能 MUX5~0で選択したピンについて、当該ビットを1にセットすると、デジタル入力機能がOFFとなり、 消費電力を削減できる。 初期値 0 0 0 0 0 0 0 0 DIDR0レジスタのビット配置 bitの位置 (ビットの名称) 7 - 6 - 5 (ADC13D) 4 (ADC12D) 3 (ADC11D) 2 (ADC10D) 1 (ADC9D) 0 (ADC8D) 機能 MUX5~0で選択したピンについて、当該ビットを1にセットすると、デジタル入力機能がOFFとなり、 消費電力を削減できる。 初期値 0 0 0 0 0 0 0 0 AD変換の入力ピン配置 前述の通り、ATMega32U4マイコンには12本のアナログ入力がある。それぞれの入力と、基板上のピンの対応は、以下の通り。 サンプルプログラム 以下の様に、スライドボリュームをADC0に接続し、ボリュームのつまみの位置によってLED(PC7)が点滅するプログラム例を、以下に示す。 スライドボリュームの出力は、0~5Vの間で変化するためADC0の入力電圧も、同様に変化する。この時のAD変換後の数値は、0~1023となる。 ○単発変換によるサンプル /* * ADの単発変換のサンプルプログラム */ #define F_CPU 16000000UL // 16MHz動作 _delay_ms()などに関係 #include avr/io.h #include util/delay.h #include avr/interrupt.h int main() { unsigned int t; CLKPR = 0x80; CLKPR = 0; // 16MHz動作のための設定 DDRC = 0b10000000; // デバッグ用のLED(PC7)の設定 // ADCの初期化 ADMUX |= _BV(REFS0); // 電源5Vを使用、ADC0を使用, データ右詰め ADCSRA |= _BV(ADEN) | _BV(ADPS2) | _BV(ADPS1) | _BV(ADPS0); // ADEN, ADSC, CK/128 ADCSRA |= _BV(ADSC); // ADをスタート while(1) { if (ADCSRA _BV(ADIF)) { // AD変換の終了を確認 ADCSRA |= _BV(ADIF); t = ADC; // ADCは16bit幅で、8bitずつ2回に分けてアクセスされるので、 // 変数アクセス中に割り込みが発生しないように注意すること if (t 512) { PORTC = 0b10000000; } else { PORTC = 0b00000000; } ADCSRA |= _BV(ADSC); // ADを再スタート } } } ○連続変換によるサンプル /* * ADの連続変換のサンプルプログラム * #define F_CPU 16000000UL // 16MHz動作 _delay_ms()などに関係 #include avr/io.h #include util/delay.h #include avr/interrupt.h int main() { unsigned int t; CLKPR = 0x80; CLKPR = 0; // 16MHz動作のための設定 DDRC = 0b10000000; // デバッグ用のLED(PC7)の設定 // ADCの初期化 ADMUX |= _BV(REFS0); // 電源5Vを使用、ADC0を使用, データ右詰め ADCSRA |= _BV(ADEN) | _BV(ADPS2) | _BV(ADATE)| _BV(ADPS1) | _BV(ADPS0); // ADEN, ADSC, CK/128 ADCSRB = 0b11110000; // ADTS3~0を0で連続変換 ADCSRA |= _BV(ADSC); // ADをスタート while(1) { if (ADCSRA _BV(ADIF)) { // AD変換の終了を確認 t = ADC; // ADCは16bit幅で、8bitずつ2回に分けてアクセスされるので、 // 変数アクセス中に割り込みが発生しないように注意すること if (t 512) { PORTC = 0b10000000; } else { PORTC = 0b00000000; } } } } AD変換と割り込み /* * AD割り込みのサンプルプログラム */ #define F_CPU 16000000UL // 16MHz動作 _delay_ms()などに関係 #include avr/io.h #include util/delay.h #include avr/interrupt.h // 割り込みハンドラISR(ADC_vect) { unsigned int t; t = ADC; // ADCは16bit幅で、8bitずつ2回に分けてアクセスされるので、 // 変数アクセス中に割り込みが発生しないように注意すること if (t 512) { PORTC = 0b10000000; } else { PORTC = 0b00000000; } } int main() { CLKPR = 0x80; CLKPR = 0; // 16MHz動作のための設定 DDRC = 0b10000000; // デバッグ用のLED(PC7)の設定 // ADCの初期化 ADMUX |= _BV(REFS0); // Vcc(5V)を基準、ADC0を使用, データ右詰め ADCSRA |= _BV(ADEN) |_BV(ADIE)| _BV(ADATE) | _BV(ADPS2) | _BV(ADPS1) | _BV(ADPS0); // ADEN, ADIE, ADATE, CK/128 ADCSRB = 0b11110000; // 連続変換 ADCSRA |= _BV(ADSC); // ADをスタート sei(); // 全ての割り込みを許可 while(1) { } }